'r -> ('a, 'b) ~ ('r -> 'a, 'r -> 'b)
